/*
 ============================================================================
 Name        : Rotella.c
 Author      :
 Version     : 0.2
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

#include <stdio.h>
#include <string.h>
#include "consola.h"
#include "configuracion.h"
#include "conexion.h"
#include "ficheros.h"
#include "logica.h"

lista listaDownloads;
lista listaUploads;

int main(int argc, char *argv[]) {

	FILE *config_file;

	// Lee los argumentos de entrada
	if (argc != 2) {
		fprintf(stderr, "Uso: %s fichero_configuracion\n", argv[0]);
		return -1;
	}

	// Lee el fichero de configuracion:
	fprintf(stdout, "Leyendo fichero de configuracion... ");
	// 1- Carga configuracion por defecto
	configuracion_defecto();
	// 2- Abre fichero de configuracion
	if ((config_file = configuracion_abrir(argv[1])) == NULL) {
		fprintf(stdout, "[Error abriendo fichero]\n");
		return -1;
	}
	// 3- Interpreta el fichero
	if (configuracion_eval(config_file) < 0) {
		fprintf(stdout, "[Error]");
		return -1;
	}
	// 4- Cierra el fichero
	configuracion_cerrar(config_file);
	fprintf(stdout, "[ok]\n");

	// Conecta con la webcache
	fprintf(stdout,"Conectando con servidor RowebCache... ");
	//conectarRowebCache();
	fprintf(stdout,"[ok]\n");

	// Prepara puertos de escucha (lanza un hilo)


	// Inicia bucle de la consola interactiva
	bucle_consola();

	return 0;
}

/*
 * se debe ejecutar tras leer el archivo de configuracion e inicializa los elementos de
 * la aplicacion
 */
int inicializarElementosInterfaz(){
	int res = TRUE;
	primerID();
	newLista( TRANSFER, &listaDownloads);
	newLista( TRANSFER, &listaUploads );
	inicializarServidor();
	return res;
}

/*
 * hay q llamarlo cuando se acabe el programa
 */
int finalizar_elementos_interfaz(){
	int res = TRUE;

	freeLista( &listaDownloads );
	freeLista( &listaUploads );
	finalizarServidor();
	return res;
}
